#pragma once

#include "GameTimer.h"
#include "Core.h"

namespace mcore
{
	class BaseApp
	{
	public:
		BaseApp(HINSTANCE hInstance);
		virtual ~BaseApp();

		void init();
		int run();

		virtual void userInit(){}

		virtual LRESULT msgProc(UINT msg, WPARAM wParam, LPARAM lParam);

	protected:
		void initMainWindow();

		Core mCore;

		bool mCoreInitialized;

		HINSTANCE mhAppInst;
		HWND      mhMainWnd;
		bool      mAppPaused;
		bool      mMinimized;
		bool      mMaximized;
		bool      mResizing;

		GameTimer mTimer;

		std::string mMainWndCaption;
		int mClientWidth;
		int mClientHeight;


	};



}
